import request from "@/servers/axiosConfig";
import api from "@/servers/apiConfig";

/**
 * 分页构造器
 * @param {string} url 接口地址
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns
 */
function pageBuilder(url, page, pageSize) {
  // 默认每页数据量
  if (!url) {
    throw new Error("url 是必要的");
  }
  page = page || 1;
  pageSize = pageSize || 10;
  return request(url, { params: { page, page_size: pageSize } });
}

/**
 * 获取知乎热榜数据
 * @returns 
 */
function getZhihuHot() {
  return request(api.zhihu.hot);
}

/**
 * 获取知乎热榜分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getZhihuHotPage(page, pageSize) {
  return pageBuilder(api.zhihu.hotPage, page, pageSize);
}

/**
 * 获取懂车帝热榜数据
 * @returns 
 */
function getDongchediHot() {
  return request(api.dongchedi.hot);
}

/**
 * 获取发现报告日榜数据
 * @returns 
 */
function getFxbaogaoDaily() {
  return request(api.fxbaogao.daily);
}

/**
 * 获取发现报告周榜数据
 * @returns 
 */
function getFxbaogaoWeekly() {
  return request(api.fxbaogao.weekly);
}

/**
 * 获取发现报告月榜数据
 * @returns 
 */
function getFxbaogaoMonthly() {
  return request(api.fxbaogao.monthly);
}

/**
 * 获取腾讯新闻置顶数据
 * @returns 
 */
function getQQnewsTop() {
  return request(api.qqnews.top);
}

/**
 * 获取腾讯新闻热榜数据
 * @returns 
 */
function getQQnewsHot() {
  return request(api.qqnews.hot);
}

/**
 * 获取腾讯新闻热榜分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getQQnewsHotPage(page, pageSize) {
  return pageBuilder(api.qqnews.hotPage, page, pageSize);
}

/**
 * 获取腾讯新闻热问数据
 * @returns 
 */
function getQQnewsHotQa() {
  return request(api.qqnews.hotQa);
}

/**
 * 获取腾讯新闻热问分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getQQnewsHotQaPage(page, pageSize) {
  return pageBuilder(api.qqnews.hotQaPage, page, pageSize);
}

/**
 * 获取少数派最新数据
 * @returns 
 */
function getSspaiLatest() {
  return request(api.sspai.latest);
}

/**
 * 获取少数派最新分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getSspaiLatestPage(page, pageSize) {
  return pageBuilder(api.sspai.latestPage, page, pageSize);
}

/**
 * 获取少数派推荐数据
 * @returns 
 */
function getSspaiRecommend() {
  return request(api.sspai.recommend);
}

/**
 * 获取少数派推荐分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getSspaiRecommendPage(page, pageSize) {
  return pageBuilder(api.sspai.recommendPage, page, pageSize);
}

/**
 * 获取小饭桌热点数据
 * @returns 
 */
function getXfzHot() {
  return request(api.xfz.hot);
}

/**
 * 获取小饭桌热点分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getXfzHotPage(page, pageSize) {
  return pageBuilder(api.xfz.hotPage, page, pageSize);
}

/**
 * 获取小饭桌最新数据 
 * @returns 
 */
function getXfzLatest() {
  return request(api.xfz.latest);
}

/**
 * 获取小饭桌最新分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getXfzLatestPage(page, pageSize) {
  return pageBuilder(api.xfz.latestPage, page, pageSize);

}

/**
 * 获取澎湃新闻热榜数据
 * @returns 
 */
function getThepaperHot() {
  return request(api.thepaper.hot);
}

/**
 * 获取澎湃新闻热榜分页数据
 * @param {number} page 
 * @param {number} pageSize 
 * @returns 
 */
function getThepaperHotPage(page, pageSize) {
  return pageBuilder(api.thepaper.hotPage, page, pageSize);
}

/**
 * 获取微博置顶数据
 * @returns 
 */
function getWeiboTop() {
  return request(api.weibo.top);
}

/**
 * 获取微博热榜数据
 * @returns 
 */
function getWeiboHot() {
  return request(api.weibo.hot);
}

/**
 * 获取36氪快讯数据
 * @returns 
 */
function getKr36Flash() {
  return request(api.kr.flash);
}

/**
 * 获取36氪快讯分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getKr36FlashPage(page, pageSize) {
  return pageBuilder(api.kr.flashPage, page, pageSize);
}

/**
 * 获取36氪最新数据
 * @returns 
 */
function getKr36Latest() {
  return request(api.kr.latest);
}

/**
 * 获取36氪最新分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getKr36LatestPage(page, pageSize) {
  return pageBuilder(api.kr.latestPage, page, pageSize);
}

/**
 * 获取36氪综合数据
 * @returns 
 */
function getKr36Zonghe() {
  return request(api.kr.zonghe);
}

/**
 * 获取36氪综合分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getKr36ZonghePage(page, pageSize) {
  return pageBuilder(api.kr.zonghePage, page, pageSize);
}

/**
 * 获取36氪热点数据
 * @returns 
 */
function getKr36Hot() {
  return request(api.kr.hot);
}

/**
 * 获取36氪热点分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getKr36HotPage(page, pageSize) {
  return pageBuilder(api.kr.hotPage, page, pageSize);
}

/**
 * 获取36氪收藏数据
 * @returns 
 */
function getKr36Bookmark() {
  return request(api.kr.bookmark);
}

/**
 * 获取36氪收藏分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getKr36BookmarkPage(page, pageSize) {
  return pageBuilder(api.kr.bookmarkPage, page, pageSize);
}

/**
 * 获取IT之家最新数据
 * @returns 
 */
function getIthomeLatest() {
  return request(api.ithome.latest);
}

/**
 * 获取IT之家最新分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getIthomeLatestPage(page, pageSize) {
  return pageBuilder(api.ithome.latestPage, page, pageSize);
}

/**
 * 获取IT之家热评榜数据
 * @returns
 */
function getIthomeHot() {
  return request(api.ithome.hot);
}

/**
 * 获取IT之家日榜数据
 * @returns
 */
function getIthomeDaily() {
  return request(api.ithome.daily);
}

/**
 * 获取IT之家周榜数据
 * @returns
 */
function getIthomeWeekly() {
  return request(api.ithome.weekly);
}

/**
 * 获取IT之家月榜数据
 * @returns
 */
function getIthomeMonthly() {
  return request(api.ithome.monthly);
}

/**
 * 获取百度贴吧热议榜数据
 * @returns
 */
function getTiebaHot() {
  return request(api.tieba.hot);
}

/**
 * 获取百度贴吧热议榜分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getTiebaHotPage(page, pageSize) {
  return pageBuilder(api.tieba.hotPage, page, pageSize);
}

/**
 * 获取抖音热榜数据
 * @returns
 */
function getDouyinHot() {
  return request(api.douyin.hot);
}

/**
 * 获取抖音热榜分页数据
 * @param {number} page 页数
 * @param {number} pageSize 每页数据量
 * @returns 
 */
function getDouyinHotPage(page, pageSize) {
  return pageBuilder(api.douyin.hotPage, page, pageSize);
}

/**
 * 获取知乎数据
 */
export const zhihu = {
  getHot: getZhihuHot,
  getHotPage: getZhihuHotPage,
}

/**
 * 获取懂车帝数据
 */
export const dongchedi = {
  getHot: getDongchediHot,
}

/**
 * 获取发现报告数据
 */
export const fxbaogao = {
  getDaily: getFxbaogaoDaily,
  getWeekly: getFxbaogaoWeekly,
  getMonthly: getFxbaogaoMonthly,
}

/**
 * 获取腾讯新闻数据
 */
export const qqnews = {
  getTop: getQQnewsTop,
  getHot: getQQnewsHot,
  getHotPage: getQQnewsHotPage,
  getHotQa: getQQnewsHotQa,
  getHotQaPage: getQQnewsHotQaPage,
}

/**
 * 获取少数派数据
 */
export const sspai = {
  getLatest: getSspaiLatest,
  getLatestPage: getSspaiLatestPage,
  getRecommend: getSspaiRecommend,
  getRecommendPage: getSspaiRecommendPage,
}

/**
 * 获取小饭桌数据
 */
export const xfz = {
  getHot: getXfzHot,
  getHotPage: getXfzHotPage,
  getLatest: getXfzLatest,
  getLatestPage: getXfzLatestPage,
}

/**
 * 获取澎湃新闻数据
 */
export const thepaper = {
  getHot: getThepaperHot,
  getHotPage: getThepaperHotPage,
}

/**
 * 获取微博数据
 */
export const weibo = {
  getTop: getWeiboTop,
  getHot: getWeiboHot,
}

/**
 * 获取36氪数据
 */
export const kr36 = {
  getFlash: getKr36Flash,
  getFlashPage: getKr36FlashPage,
  getLatest: getKr36Latest,
  getLatestPage: getKr36LatestPage,
  getZonghe: getKr36Zonghe,
  getZonghePage: getKr36ZonghePage,
  getHot: getKr36Hot,
  getHotPage: getKr36HotPage,
  getBookmark: getKr36Bookmark,
  getBookmarkPage: getKr36BookmarkPage,
}

/**
 * 获取IT之家数据
 */
export const ithome = {
  getLatest: getIthomeLatest,
  getLatestPage: getIthomeLatestPage,
  getHot: getIthomeHot,
  getDaily: getIthomeDaily,
  getWeekly: getIthomeWeekly,
  getMonthly: getIthomeMonthly,
}

/**
 * 获取百度贴吧数据
 */
export const tieba = {
  getHot: getTiebaHot,
  getHotPage: getTiebaHotPage,
}

/**
 * 获取抖音数据
 */
export const douyin = {
  getHot: getDouyinHot,
  getHotPage: getDouyinHotPage,
}
